[新機能]Snowflakeの新しいアカウント「Organization Account」を試してみた
さがらです。
2024年10月のリリースで、Snowflakeに新しいアカウントである「Organization Account」が追加されました。※2024年11月27日時点、パブリックプレビューの機能です。
このOrganization Accountを実際に作って触ってみたので、その内容を本記事でまとめてみます。
Organization Accountとは
Organization Accountですが、「管理者がOrganization全体に影響するタスクを実行するために使用する特別な種類のアカウント」となります。
下記は公式Docからの引用ですが、このようなタスクがOrganization Accountで行うことが出来ます。
- 各アカウントからのクエリ履歴など、Organization内のすべてのアカウントから収集されたデータを表示します。
- Organization全体で Snowflake Marketplaceの利用規約を有効にします。
- アカウントの作成や削除など、Organization内のアカウントのライフサイクルを管理します。
- アカウントのレプリケーションを有効にします。
ORGADMINロールとの棲み分け
これまでSnowflakeでOrganizationレベルの操作を行う場合には、ORGADMIN
というロールを使っていました。
公式Docを見る限りでは、今後以下の流れでORGADMIN
ロールからOrganization Accountに移行していくようです。
- Organization Accountのプレビュー期間中
ORGADMIN
ロールでもOrganization Accountでも、Organizationレベルの操作が可能
- Organization Accountが一般提供となった時
- 移行期間を設けて、
ORGADMIN
ロールからOrganization Accountに移行をしていく
- 移行期間を設けて、
注意事項:Organization Accountを作成するとコストが発生します
Organization Accountですが、作成するとコストが発生します。
具体的には、Organization Account専用のビューのために下記の2つが発生します。この点だけご注意ください。
- Organization Account専用のビューに使用するデータ入力に用いるサーバーレスタスクのコスト
- Organization Account専用のビューに使用するデータのストレージのコスト
公式Docからの引用ですが、下記のクエリをOrganization Accountで実行することで、どのくらいのコストがかかるか試算を行うことが出来ます。
- サーバーレスタスクのコスト
SELECT * FROM snowflake.organization_usage.usage_in_currency_daily
WHERE usage_type = 'organization usage';
- ストレージのコスト
SELECT
SUM(active_bytes + time_travel_bytes + failsafe_bytes + retained_for_clone_bytes) / pow(1000, 4)
AS org_usage_approx_storage_tb
FROM snowflake.account_usage.table_storage_metrics
WHERE 1=1
AND table_schema = 'ORGANIZATION_USAGE_LOCAL';
注意事項:ORGANIZATION_USAGEスキーマについて
Organization Accountを作成すると、ORGANIZATION_USAGE
というスキーマ内のビューでOrganization内のすべてのアカウントから収集されたデータを見ることが出来ます。
ただし、このORGANIZATION_USAGE
スキーマについては下記の注意事項があります。
- データの更新まで最大24時間要すること
- 各アカウントのデータを置き換えることなく新しいデータを追加する仕様のため、365日を越えたデータが保存されること(公式Doc)
- ただし、Organization Accountを有効化してから保持開始となるため、Organization Accountを有効化したからこれまでの全データが全て確認できる、というわけではないためご注意ください。
試してみた
では、実際にOrganization Accountを試してみたいと思います。
Organization Accountの作成
任意のORGADMIN
ロールが利用できるアカウントで、以下のクエリを実行します。
USE ROLE ORGADMIN;
CREATE ORGANIZATION ACCOUNT myorgaccount
ADMIN_NAME = admin
ADMIN_PASSWORD = 'TestPassword1'
EMAIL = 'myemail@myorg.org'
MUST_CHANGE_PASSWORD = true
EDITION = enterprise;
すると、下図のように表示されるため、表示されたURLを控えておきます。
Organization AccountへのログインとGLOBALORGADMINロールの確認
先ほど控えたURLをブラウザで貼り付けて、ログインします。
見た目は普通のアカウントですが、左下のロールを見ると、GLOBALORGADMIN
というロールが付与されています。このロールには、以下の権限が付与されています。
- Organization Account事態の管理を含む、全てのOrganizationレベルのタスク(アカウントの管理、Organizationの規約や連絡先の管理)
ORGANIZATION_USAGE
内のビューの閲覧と、権限の付与
ORGANIZATION_USAGEスキーマ内のビューの確認
実際に、ORGANIZATION_USAGE
スキーマ内のビューを確認してみます。(アカウント作成後、約40時間経過後に確認した内容を本記事で載せています。初回の同期処理はアカウント作成後から18時間後には完了していました。)
通常のACCOUNT_USAGE
にも存在するACCESS_HISTORY
をクエリすると、積み重ねる形式のため365日以上経過したデータも保存されています。(このデータを確認したのは2024年11月27日6時20分頃。)
また、ORGANIATION_NAME
、ACCOUNT_LOCATOR
、ACCOUNT_NAME
という、ORGANIZATION_USAGE
スキーマのビュー用に追加されたカラムも確認できます。
参考までに、従来のORGADMIN
で確認できたORGANIZATION_USAGE
スキーマと、今回試しているOrganization Accountで確認できるORGANIZATION_USAGE
スキーマのビューの一覧を画像で載せておきます。Organization Accountだとより多くのビューが対応しているのがわかりますね!
- 従来の
ORGADMIN
で確認できたORGANIZATION_USAGE
スキーマ
- 新機能のOrganization Accountで確認できる
ORGANIZATION_USAGE
スキーマ
最後に
Snowflakeに新しいアカウントである「Organization Account」を試してみました。
Organization AccountのORGANIZATION_USAGE
スキーマだと、過去365日を越えたOrganization内の各アカウントのACCOUNT_USAGE
スキーマのデータを自動で保持できるのが良いなと思いました!(社内の監査要件などで365日以上のデータを保持しないといけないケースはあると思いますので…)
まだプレビュー機能であることと、Organization Accountを作るとデータ保持のためのにサーバーレスタスクやストレージのコストはかかりますが、過去365日を越えたデータを保持しておきたい場合にはぜひOrganization Accountを作ってみてください!